package com.gupaoedu.pattern.prototype.deep;

import com.gupaoedu.pattern.prototype.Course;
import com.gupaoedu.pattern.prototype.shallow.Student;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 2019/5/12
 * created by chenpp
 * 在深克隆中使用了序列化反序列化所以要求对象实现Serializable接口
 * 比方说当需要创建两个学生,这两个学生除了姓名不同,一开始的课程等都是一样的,可以采用深克隆的方式先
 * 创建一个克隆对象,然后再修改学生的姓名
 */
public class DeepCloneTest {
    public static void main(String[] args) {
        DeepStudent stu = new DeepStudent();
        stu.setStudentName("Jane");
        List<Course> list = new ArrayList<Course>();
        Course math = new Course("Math",new Date());
        Course chinese = new Course("Chinese",new Date());
        list.add(math) ;
        list.add(chinese);
        stu.setCourses(list);
        DeepStudent cloneStu = (DeepStudent) stu.clone();
        cloneStu.getCourses().add(new Course("English",new Date()));
        System.out.println(stu.getCourses().size());
        System.out.println(cloneStu.getCourses()==stu.getCourses());
    }
}
